package io.github.echarts.option.component;

import io.github.echarts.option.abstracts.AbstractOption;
import io.github.echarts.option.style.TextStyle;

/**
 * 图表标题配置。
 */
public class Title extends AbstractOption {
    
    private static final long serialVersionUID = 1L;
    
    private String text;
    private String subtext;
    private Boolean show;
    private String left;
    private String top;
    private String textAlign;
    private String textVerticalAlign;
    private TextStyle textStyle;
    private TextStyle subtextStyle; // 副标题文本样式

    /**
     * 获取标题文本
     *
     * @return 标题文本
     */
    public String getText() {
        return text;
    }

    /**
     * 设置标题文本
     *
     * @param text 标题文本
     * @return 当前实例，用于链式调用
     */
    public Title setText(String text) {
        this.text = text;
        return this;
    }
    
    /**
     * 获取副标题文本
     * 
     * @return 副标题文本
     */
    public String getSubtext() {
        return subtext;
    }
    
    /**
     * 设置副标题文本
     * 
     * @param subtext 副标题文本
     * @return 当前实例，用于链式调用
     */
    public Title setSubtext(String subtext) {
        this.subtext = subtext;
        return this;
    }
    
    /**
     * 获取是否显示标题组件
     * 
     * @return 是否显示
     */
    public Boolean getShow() {
        return show;
    }
    
    /**
     * 设置是否显示标题组件
     * 
     * @param show 是否显示
     * @return 当前实例，用于链式调用
     */
    public Title setShow(Boolean show) {
        this.show = show;
        return this;
    }

    /**
     * 获取标题水平位置
     *
     * @return 水平位置，可以是 'left', 'center', 'right' 或具体像素值
     */
    public String getLeft() {
        return left;
    }

    /**
     * 设置标题水平位置
     *
     * @param left 水平位置，可以是 'left', 'center', 'right' 或具体像素值
     * @return 当前实例，用于链式调用
     */
    public Title setLeft(String left) {
        this.left = left;
        return this;
    }

    /**
     * 获取标题垂直位置
     *
     * @return 垂直位置，可以是 'top', 'middle', 'bottom' 或具体像素值
     */
    public String getTop() {
        return top;
    }

    /**
     * 设置标题垂直位置
     *
     * @param top 垂直位置，可以是 'top', 'middle', 'bottom' 或具体像素值
     * @return 当前实例，用于链式调用
     */
    public Title setTop(String top) {
        this.top = top;
        return this;
    }
    
    /**
     * 获取水平对齐方式
     * 
     * @return 水平对齐方式
     */
    public String getTextAlign() {
        return textAlign;
    }
    
    /**
     * 设置水平对齐方式
     * 
     * @param textAlign 水平对齐方式
     * @return 当前实例，用于链式调用
     */
    public Title setTextAlign(String textAlign) {
        this.textAlign = textAlign;
        return this;
    }
    
    /**
     * 获取垂直对齐方式
     * 
     * @return 垂直对齐方式
     */
    public String getTextVerticalAlign() {
        return textVerticalAlign;
    }
    
    /**
     * 设置垂直对齐方式
     * 
     * @param textVerticalAlign 垂直对齐方式
     * @return 当前实例，用于链式调用
     */
    public Title setTextVerticalAlign(String textVerticalAlign) {
        this.textVerticalAlign = textVerticalAlign;
        return this;
    }
    
    /**
     * 获取主标题文本样式
     * 
     * @return 文本样式
     */
    public TextStyle getTextStyle() {
        return textStyle;
    }
    
    /**
     * 设置主标题文本样式
     * 
     * @param textStyle 文本样式
     * @return 当前实例，用于链式调用
     */
    public Title setTextStyle(TextStyle textStyle) {
        this.textStyle = textStyle;
        return this;
    }
    
    /**
     * 获取副标题文本样式
     * 
     * @return 副标题文本样式
     */
    public TextStyle getSubtextStyle() {
        return subtextStyle;
    }
    
    /**
     * 设置副标题文本样式
     * 
     * @param subtextStyle 副标题文本样式
     * @return 当前实例，用于链式调用
     */
    public Title setSubtextStyle(TextStyle subtextStyle) {
        this.subtextStyle = subtextStyle;
        return this;
    }
} 